package com.promote.common;

import java.util.Collection;
import java.util.Map;

/**
 * @ClassName Validator
 * Description 校验工具类
 * @Author WangJun
 * Date 2021/5/13 1:11
 * @Version 1.0
 **/
public class Validator {

    /**
     * 判断是否为null
     * @param value
     * @return
     */
    public static boolean isNull(Object value) {
        return value == null;
    }

    /**
     * 判断是否不为null
     * @param value
     * @return
     */
    public static boolean notNull(Object value) {
        return value != null;
    }

    /**
     * 判断是否为空
     * @param value
     * @return
     */
    public static boolean isEmpty(Object value) {
        if(isNull(value)) {
            return true;
        }

        if(value instanceof String) {
            return ((String)value).trim().length() == 0;
        }

        if(value instanceof Collection) {
            return ((Collection<?>)value).isEmpty();
        }

        if(value instanceof Map) {
            return ((Map<?,?>)value).isEmpty();
        }

        if (value instanceof Object[]) {
            return  ((Object[])value).length == 0;
        }

        return false;
    }

    /**
     * 判断是否不为空
     * @param value
     * @return
     */
    public static boolean notEmpty(Object value) {
        return !isEmpty(value);
    }

    /**
     * 任何一个为空
     * @param values
     * @return
     */
    public static boolean anyEmpty(Object... values) {
        if(isEmpty(values)) {
            return true;
        }

        boolean result = false;

        int length = values.length;
        for(int i = 0; i < length; i++) {
            if(isEmpty(values[i])) {
                result = true;
                break;
            }
        }

        return result;
    }

    /**
     * 是否全部为空
     * @param values
     * @return
     */
    public static boolean allEmpty(Object... values) {
        if(isEmpty(values)) {
            return true;
        }

        boolean result = true;

        int length = values.length;
        for(int i = 0; i < length; i++) {
            if(notEmpty(values[i])) {
                result = false;
                break;
            }
        }

        return result;
    }
}